package com.opensource.afuluo.pipeline;

import com.opensource.afuluo.ctx.Context;
import com.opensource.afuluo.valve.Valve;

/**
 * 编排管道流
 */
public interface Pipeline {

    /**
     * 获取头结点
     *
     * @return
     */
    Valve head();

    /**
     * 获取尾结点
     *
     * @return
     */
    Valve tail();

    /**
     * 获取长度
     *
     * @return
     */
    int size();

    /**
     * 转换为人可读字符串
     *
     * @return
     */
    String toPlain();

    /**
     * 进行处理
     *
     * @param ctx
     */
    void entry(Context ctx);
}
